/*
 * Copyright 2022 FA-Software (Shanghai) Co., Ltd. All Rights Reserved.
 *
 * Licensed under the FA-Software License, Version 1.0;
 * https://www.fa-software.com/licenses/LICENSE-1.0
 */
package com.eric.study.reactor.commons.response;

import java.io.Serializable;

/**
 * myCIM 系统消息模版接口，所有消息模版都应继承 {@link BusinessReturnCode} 接口，消息模版中必须包含 <b>code</b>。如果在实现类中
 * 未定义默认的 <b>message</b>，则将会在国际化消息列表中根据 code 查询定义的消息。
 *
 * <p>
 * <br>
 *
 * <p>
 * change history:
 *
 * <pre>
 * date               defect            person            comments
 * --------------------------------------------------------------------------------
 * 2023/2/9 15:29    ********          Qiheng Zhang       create file.
 * </pre>
 *
 * @author Qiheng Zhang
 * @date 2023/2/9 15:29
 * @copyright 2023, FA Software (Shanghai) Co., Ltd. All Rights Reserved.
 * @since 1.0.0
 */
public interface BusinessReturnCode extends Cloneable, Serializable {

    /**
     * 业务消息错误码，需唯一。
     * @return code
     * @author Qiheng Zhang
     * @date 2023/6/6 17:34
     * @since 1.0.0
     */
    String getCode();

    /**
     * 获取自定义业务异常码的前缀。
     * @return code 码前缀
     * @author Qiheng Zhang
     * @date 2023/6/8 11:03
     * @since 1.0.0
     */
    default String getPrefix() {
        return "";
    }

    /**
     * 获取组装后的业务异常码。
     * @return 业务异常码
     * @author Qiheng Zhang
     * @date 2023/6/8 11:05
     * @since 1.0.0
     */
    default String getFinalCode() {
        return getPrefix() + getCode();
    }

    /**
     * 获取消息码定义的默认消息。如果未定义，将从国际化列表中查询消息信息。
     * @return message
     * @author Qiheng Zhang
     * @date 2023/6/6 17:34
     * @since 1.0.0
     */
    default String getMessage() {
        return "";
    }

}
